package co.inventario.modelo.negocio;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.EmpleadoDAOSQLServer;
import co.inventario.datos.sqlserver.LoginDAOSQLServer;
import co.inventario.entidad.EmpleadoDTO;
import co.inventario.entidad.LoginDTO;


public class LoginNegocio {
	
	public void crear(LoginDTO loginDTO, Connection connection) throws Exception, SQLException {
		LoginDAOSQLServer loginDAOSQLServer = new LoginDAOSQLServer();
		LoginDTO loginDTOConsultado = loginDAOSQLServer.consultarPorUsuario(loginDTO, connection);
		if (loginDTOConsultado == null) {
			loginDAOSQLServer.crear(loginDTO, connection);
		} else {
			throw new Exception("El usuario que intenta crear, ya existe.");
		}
	}
	
	public void actualizar(LoginDTO loginDTO, Connection connection) throws Exception, SQLException {
		LoginDAOSQLServer loginDAOSQLServer = new LoginDAOSQLServer();
		LoginDTO loginDTOConsultado = loginDAOSQLServer.consultarPorUsuario(loginDTO, connection);
		if (loginDTOConsultado != null) {
			loginDAOSQLServer.actualizar(loginDTO, connection);
		} else {
			throw new Exception("El usuario que intenta actualizar, no existe.");
		}
	}
	
	public LoginDTO consultarPorCodigo(LoginDTO loginDTO, Connection connection) throws Exception, SQLException {
		LoginDAOSQLServer loginDAOSQLServer = new LoginDAOSQLServer();
		LoginDTO loginDTOConsultado = loginDAOSQLServer.consultarPorUsuario(loginDTO, connection);
		return loginDTOConsultado;
	}
	
	public ArrayList<LoginDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		LoginDAOSQLServer loginDAOSQLServer = new LoginDAOSQLServer();
		ArrayList<LoginDTO> loginDTOLista = loginDAOSQLServer.consultarTodo(connection);
		EmpleadoDAOSQLServer empleadoDAOSQLServer = new EmpleadoDAOSQLServer();
		EmpleadoDTO empleadoDTO = null;
		for (LoginDTO loginDTO : loginDTOLista) {
			empleadoDTO = empleadoDAOSQLServer.consultarPorCodigo(loginDTO.getEmpleadoDTO(), connection);
			loginDTO.setEmpleadoDTO(empleadoDTO);
		}
		return loginDTOLista;
	}
	
}
